package com.rc.saas.tenant.service.hlht;

import com.rc.saas.tenant.base.BaseService;
import com.rc.saas.tenant.mapper.hlht.HlhtTenantOpenStationMapper;
import com.rc.saas.tenant.model.elec.ElecStation;
import com.rc.saas.tenant.model.hlht.*;
import com.rc.saas.tenant.model.operator.TenantOperatorStation;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

public interface HlhtTenantOpenStationService extends BaseService<Long, HlhtTenantOpenStation, HlhtTenantOpenStationExample, HlhtTenantOpenStationMapper> {
    void insertByBatch(List<ElecStation> elecStationList, HlhtTenantOpen hlhtTenantOpen,String hlhtOpenforType, String loginName);

    void deleteByBatch(List<Long> openStationIdList);

    void deleteByBatchHlhtTenantOpen(List<Long> elecStationId,  HlhtTenantOpen hlhtTenantOpen,String hlhtOpenforType);

    void deleteByBatchHlhtOperateIds(List<Long> openStationIdList,List<String> hlhtOperateIds);

    void updateOperateStatusByBatch(List<Long> openStationIdList, String operateStatus, String loginName);

    void updateTenantOperatorByStationId(List<TenantOperatorStation> tenantOperatorStationList);

    List<HlhtTenantOpenStation> listStationByEnterprisePolicy(String tenantCode, String hlhtOperatorId,String hlhtTenantCode);

    List<Long> getElecStationIdByOpenStation(List<Long> openStationIdList);

    /**
     * 批量更新hlhtOpenforType
     * @param openStationIdList
     * @param hlhtOpenforType
     */
    void updateHlhtOpenforTypeBatchByOpenStationIdList(List<Long> openStationIdList, String hlhtOpenforType);

    void updateOperateStatusByOpenStationId(Long openStationId, String operateStatus);

    void updateOperateStatusByHlhtTenantOpen(HlhtTenantOpen hlhtTenantOpen, String operateStatus);

    void updateHlhtOpenforTypeByElecStationListAndHlhtOperatorNotNull(HlhtTenantOpen hlhtTenantOpen,List<Long> elecStationIdList,String hlhtOpenforType);

    void updateTenantOperatorCodeByStationId(List<Long> stationIdList, String tenantOperatorCode);

    List<Long> selectOpenStationIdByhlhtTenantOpen(List<Long> stationIdList, HlhtTenantOpen hlhtTenantOpen);
}
